/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package model.dao;

import java.util.Calendar;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceException;
import model.dominio.SessaoUsuario;
import model.dominio.TipoVeiculo;
import model.dominio.Veiculo;

/**
 *
 * @author Braulio
 */
public class DaoVeiculo extends DaoBase {

    /**
     * @author Braulio
     * Chama o construtor da superclasse.
     */
    public DaoVeiculo() {
        super();
    }

    public Veiculo salvar(Veiculo veiculo) {
        veiculo.setData_ultima_alteracao(Calendar.getInstance());
        veiculo.setUsuario(SessaoUsuario.getUsuarioLogado());
        return (Veiculo) super.salvar(veiculo);
    }

    public List<Veiculo> buscarVeiculosDisponiveis(TipoVeiculo tipo) {
        EntityManager em = super.getEntityManager();
        List lstResult = null;
        try {
            String strSQL = "SELECT v FROM Veiculo v WHERE v.codigo NOT IN (SELECT l.veiculo FROM Locacao l WHERE l.kmEntrada IS NULL) AND v.tipo=" + tipo.getCodigo();
            em.getTransaction().begin();
            lstResult = em.createQuery(strSQL).getResultList();
            return lstResult;
        } catch (PersistenceException e) {
            lstResult = null;
        } finally {
            em.close();
        }
        return null;
    }

    public List<Veiculo> buscarVeiculosIndisponiveis(TipoVeiculo tipo) {
        EntityManager em = super.getEntityManager();
        List lstResult = null;
        try {
            String strSQL = "SELECT v FROM Veiculo v WHERE v.codigo IN (SELECT l.veiculo FROM Locacao l WHERE l.kmEntrada IS NULL) AND v.tipo=" + tipo.getCodigo();
            em.getTransaction().begin();
            lstResult = em.createQuery(strSQL).getResultList();
            return lstResult;
        } catch (PersistenceException e) {
            return null;
        } finally {
            em.close();
        }
    }
}
